Various forward error correction encoding schemes having low to very low rates have been proposed, including:                Turbo-Hadamard codes as discussed in L. Ping et al., “Low rate turbo Hadamard codes”, IEEE Transactions on Information Theory, Vol. 40, No. 12, December 2003, the contents of which are hereby incorporated by reference in its entirety;        Zigzag Hadamard codes as discussed in L. Ping et al., “Zigzag codes and concatenated zigzag codes”, IEEE Transactions on Information Theory, Vol. 47, No. 2, February 2001, and K. Li et al., “Low rate repeat zigzag Hadamard codes”, IEEE transactions on Information Theory, Vol. 54, No. 2, February 2008, the contents of which are hereby incorporated by reference in its entirety; and        multi-edge type low rate codes as discussed in T. Richardson, “Multi-edge Type LDPC codes”, an online document which can be found at http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.106.7310&rep=rep1&type=pdf, April 2004, the contents of which are hereby incorporated by reference in its entirety.        
For “Low Density Parity Check” (LDPC codes), in general during encoding, a generator matrix G converts a message vector into a code vector by means of matrix multiplication. During decoding, a parity check matrix H is used which has the property such that matrix multiplication of the code vector by the parity check matrix H results in a null vector. For LDPC codes, the parity check matrix is sparse (i.e. it is largely populated by zeros).
A convenient way of representing an LDPC is in the form of a bipartite graph in which the nodes of the graph are separated into two distinct sets, referred to as variable nodes (v-nodes) and check nodes (c-nodes), with edges only connecting nodes of two different types. Such a graph is commonly called a Tanner graph. The number of v-nodes corresponds the size Nv of the code vector. The number of c-nodes corresponds to the size Nc, of the parity check vector, which is given by Nv−Ni; where Ni is the size of the information vector at the input of the encoder.
The girth of a Tanner graph is defined as the length of the smallest cycle in the Tanner graph. For good performance, it is desirable for the girth to be large.
The degree of a node is determined by the number of branches issued from and to the node.
One way of decoding an LDPC code is to use an iterative decoding algorithm, such as the belief propagation algorithm, which passes messages along the edges of such a graph. The values at a node are updated in accordance with messages received by that node. The iterations stop either when the check nodes correspond to a null vector or a default number of iterations have taken place.
LDPC coding designed over the Galois field GF(q) has been shown to approach the Shannon limit for performance when q=2 and the codeword lengths are very long. It has also been shown that for more moderate codeword lengths, efficient error decoding can be achieved by increasing q above 2, see for example L. Sassateli et al., “Low-rate Non-Binary LDPC Codes”, Proceedings of IEEE Turbo-Coding Symposium, Lausanne, Switzerland, September 2008, the contents of which are hereby incorporated by reference in its entirety.
To aid the designing of improved LDPC codes, it has been proposed to derive an LDPC code using a protograph, which is effectively a Tanner graph with a relatively small number of nodes, as a template. See for example D. Divsalar et al., “Low rate LDPC codes with simple protograph structure”, International Symposium on Information Theory (ISIT), 2005, the contents of which are hereby incorporated by reference in its entirety. The resulting LDPC code is sometimes referred to as a protograph code. The performance of a protograph can be comparatively easily analysed as it involves a small number of nodes, and this provides significant information on the performance of an LDPC code derived from the protograph.